﻿using System;

namespace Flagwind.Plugins
{
	public class PluginExtendedProperty : PluginElementProperty
	{
		#region 成员字段

		private Plugin _plugin;

		#endregion

		#region 构造方法

		internal PluginExtendedProperty(PluginElement owner, string name, string rawValue, Plugin plugin) : base(owner, name, rawValue)
		{
			if(plugin == null)
				throw new ArgumentNullException(nameof(plugin));

			_plugin = plugin;
		}

		internal PluginExtendedProperty(PluginElement owner, string name, PluginTreeNode valueNode, Plugin plugin) : base(owner, name, valueNode)
		{
			if(plugin == null)
				throw new ArgumentNullException(nameof(plugin));

			_plugin = plugin;
		}

		#endregion

		#region 公共属性

		/// <summary>
		/// 获取当前扩展属性的定义插件。
		/// </summary>
		/// <remarks>
		///		<para>注意：该属性值表示本扩展属性是由哪个插件扩展的。因此它未必等同于<see cref="Owner"/>属性对应的<seealso cref="PluginElement"/>类型中的Plugin属性值。</para>
		/// </remarks>
		public Plugin Plugin
		{
			get
			{
				return _plugin;
			}
		}

		#endregion
	}
}